/**
 * 
 */
package com.axdoc.walletbiz.record.service;


import com.axdoc.walletbiz.record.exceptions.WalletBizRecordException;
import com.axdoc.walletbiz.record.mq.message.TransactionDoneMessage;

/**
 * @author liyanhui
 * 记账业务
 */
public interface RecordService {
	/**
	 * 支付成功记账
	 * @param trade_no
	 */
	public void paySuccess(String trade_no,Long biz_time,String msgId) throws WalletBizRecordException;
	/**
	 * 退款成功记账
	 * @param trade_no
	 */
	public void refundSuccess(String trade_no,Long biz_time,String msgId) throws WalletBizRecordException;
	/**
	 * 风控记账
	 * @param biz_no
	 * @param doc_id
	 * @param balance
	 * @param occurTime
	 * @param msgId
	 * @throws WalletBizRecordException
	 */
	public void risk(String biz_no, String doc_id, int balance, Long biz_time, String biz_type,
			String income_id, String trade_no, String msgId) throws WalletBizRecordException;
	/**
	 * 交易完成记账
	 * @param biz_no
	 * @param doc_id
	 * @param balance
	 * @param occurTime
	 * @param biz_type
	 * @param income_id
	 * @param trade_no
	 * @param detail_type
	 * @param detail_id
	 * @param msgId
	 * @throws WalletBizRecordException
	 */
	public void transactionDone(TransactionDoneMessage message) throws WalletBizRecordException;
	/**
	 * 冻结记账
	 * @param biz_no
	 * @param doc_id
	 * @param balance
	 * @param date
	 * @param msgId
	 * @throws WalletBizRecordException
	 */
	public void bizFrozen(String biz_no, String doc_id, int balance, long date,String msgId) throws WalletBizRecordException;
	/**
	 * 解冻记账
	 * @param biz_no
	 * @param doc_id
	 * @param balance
	 * @param msgId
	 * @throws WalletBizRecordException
	 */
	public void bizUnFrozen(String biz_no, String doc_id, int balance ,String msgId) throws WalletBizRecordException;
	/**
	 * 打款成功记账
	 * @param trade_no
	 * @param doc_id
	 * @param balance
	 * @param msg_type
	 * @param occurTime
	 * @param msgId
	 * @throws WalletBizRecordException
	 */
	public void dkSuccess(String biz_no, String doc_id, int balance,Long biz_time,String msgId) throws WalletBizRecordException;
	/**
	 * 打款失败记账
	 * @param trade_no
	 * @param doc_id
	 * @param balance
	 * @param msg_type
	 * @param occurTime
	 * @param msgId
	 * @throws WalletBizRecordException
	 */
	public void dkFailure(String biz_no, String doc_id, int balance,Long biz_time,String msgId) throws WalletBizRecordException;
	/**
	 * 设置可提现金额
	 * @param biz_no
	 * @param doc_id
	 * @param balance
	 * @param biz_time
	 * @param msgId
	 * @throws WalletBizRecordException
	 */
	public void setWithdrawalCan(String biz_no, String doc_id, int balance,Long biz_time,String msgId) throws WalletBizRecordException;
	/**
	 * 设置提现中金额
	 * @param biz_no
	 * @param doc_id
	 * @param balance
	 * @param biz_time
	 * @param msgId
	 * @throws WalletBizRecordException
	 */
	public void setWithdrawalIng(String biz_no, String doc_id, int balance,Long biz_time,String msgId) throws WalletBizRecordException;
}
